rcar_gen3: drivers: qos: M3W: Configure DBSC QoS from a table
authorMarek Vasut <[email protected]>
Fri, 14 Jun 2019 14:08:19 +0000 (16:08 +0200)
committerMarek Vasut <[email protected]>
Mon, 17 Jun 2019 13:13:22 +0000 (15:13 +0200)
Convert the DBSC QoS setting function to a simple table of register-value
pairs and pass it to common rcar_qos_dbsc_setting() to write those values
to matching registers.

Signed-off-by: Marek Vasut <[email protected]>
Change-Id: Ie2cbfdacf6d1c7eca4498ab7787b866a83660485

drivers/staging/renesas/rcar/qos/M3/qos_init_m3_v10.c
drivers/staging/renesas/rcar/qos/M3/qos_init_m3_v11.c
drivers/staging/renesas/rcar/qos/M3/qos_init_m3_v30.c

index 5d6bd29cb762509f1314e4d6951e66f7beb04e33..a8264cb2a9f4bcdfa767fdc0a407c4c8d9b309c2 100644 (file)
 
 #include "qos_init_m3_v10_mstat.h"
 
-static void dbsc_setting(void)
-{
+struct rcar_gen3_dbsc_qos_settings m3_v10_qos[] = {
        /* BUFCAM settings */
        /* DBSC_DBCAM0CNF0 not set */
-       io_write_32(DBSC_DBCAM0CNF1, 0x00043218);
-       io_write_32(DBSC_DBCAM0CNF2, 0x000000F4);
-       io_write_32(DBSC_DBCAM0CNF3, 0x00000000);
-       io_write_32(DBSC_DBSCHCNT0, 0x080F0037);
+       { DBSC_DBCAM0CNF1, 0x00043218 },
+       { DBSC_DBCAM0CNF2, 0x000000F4 },
+       { DBSC_DBCAM0CNF3, 0x00000000 },
+       { DBSC_DBSCHCNT0, 0x080F0037 },
        /* DBSC_DBSCHCNT1 not set */
-       io_write_32(DBSC_DBSCHSZ0, 0x00000001);
-       io_write_32(DBSC_DBSCHRW0, 0x22421111);
+       { DBSC_DBSCHSZ0, 0x00000001 },
+       { DBSC_DBSCHRW0, 0x22421111 },
 
        /* DDR3 */
-       io_write_32(DBSC_SCFCTST2, 0x012F1123);
+       { DBSC_SCFCTST2, 0x012F1123 },
 
        /* QoS Settings */
-       io_write_32(DBSC_DBSCHQOS00, 0x00000F00);
-       io_write_32(DBSC_DBSCHQOS01, 0x00000B00);
-       io_write_32(DBSC_DBSCHQOS02, 0x00000000);
-       io_write_32(DBSC_DBSCHQOS03, 0x00000000);
-       io_write_32(DBSC_DBSCHQOS40, 0x00000300);
-       io_write_32(DBSC_DBSCHQOS41, 0x000002F0);
-       io_write_32(DBSC_DBSCHQOS42, 0x00000200);
-       io_write_32(DBSC_DBSCHQOS43, 0x00000100);
-       io_write_32(DBSC_DBSCHQOS90, 0x00000300);
-       io_write_32(DBSC_DBSCHQOS91, 0x000002F0);
-       io_write_32(DBSC_DBSCHQOS92, 0x00000200);
-       io_write_32(DBSC_DBSCHQOS93, 0x00000100);
-       io_write_32(DBSC_DBSCHQOS130, 0x00000100);
-       io_write_32(DBSC_DBSCHQOS131, 0x000000F0);
-       io_write_32(DBSC_DBSCHQOS132, 0x000000A0);
-       io_write_32(DBSC_DBSCHQOS133, 0x00000040);
-       io_write_32(DBSC_DBSCHQOS140, 0x000000C0);
-       io_write_32(DBSC_DBSCHQOS141, 0x000000B0);
-       io_write_32(DBSC_DBSCHQOS142, 0x00000080);
-       io_write_32(DBSC_DBSCHQOS143, 0x00000040);
-       io_write_32(DBSC_DBSCHQOS150, 0x00000040);
-       io_write_32(DBSC_DBSCHQOS151, 0x00000030);
-       io_write_32(DBSC_DBSCHQOS152, 0x00000020);
-       io_write_32(DBSC_DBSCHQOS153, 0x00000010);
-}
+       { DBSC_DBSCHQOS00, 0x00000F00 },
+       { DBSC_DBSCHQOS01, 0x00000B00 },
+       { DBSC_DBSCHQOS02, 0x00000000 },
+       { DBSC_DBSCHQOS03, 0x00000000 },
+       { DBSC_DBSCHQOS40, 0x00000300 },
+       { DBSC_DBSCHQOS41, 0x000002F0 },
+       { DBSC_DBSCHQOS42, 0x00000200 },
+       { DBSC_DBSCHQOS43, 0x00000100 },
+       { DBSC_DBSCHQOS90, 0x00000300 },
+       { DBSC_DBSCHQOS91, 0x000002F0 },
+       { DBSC_DBSCHQOS92, 0x00000200 },
+       { DBSC_DBSCHQOS93, 0x00000100 },
+       { DBSC_DBSCHQOS130, 0x00000100 },
+       { DBSC_DBSCHQOS131, 0x000000F0 },
+       { DBSC_DBSCHQOS132, 0x000000A0 },
+       { DBSC_DBSCHQOS133, 0x00000040 },
+       { DBSC_DBSCHQOS140, 0x000000C0 },
+       { DBSC_DBSCHQOS141, 0x000000B0 },
+       { DBSC_DBSCHQOS142, 0x00000080 },
+       { DBSC_DBSCHQOS143, 0x00000040 },
+       { DBSC_DBSCHQOS150, 0x00000040 },
+       { DBSC_DBSCHQOS151, 0x00000030 },
+       { DBSC_DBSCHQOS152, 0x00000020 },
+       { DBSC_DBSCHQOS153, 0x00000010 },
+};
 
 void qos_init_m3_v10(void)
 {
-       dbsc_setting();
+       rcar_qos_dbsc_setting(m3_v10_qos, ARRAY_SIZE(m3_v10_qos), false);
 
        /* DRAM Split Address mapping */
 #if RCAR_DRAM_SPLIT == RCAR_DRAM_SPLIT_4CH
index f3d0d841fcd93526b6bc2b732ac7a9b980b470e6..22fd83a9080f1fa688346edff55afa5c2333d017 100644 (file)
 #endif /* RCAR_REWT_TRAINING != RCAR_REWT_TRAINING_DISABLE */
 #endif
 
-static void dbsc_setting(void)
-{
+struct rcar_gen3_dbsc_qos_settings m3_v11_qos[] = {
        /* BUFCAM settings */
-       io_write_32(DBSC_DBCAM0CNF1, 0x00043218);
-       io_write_32(DBSC_DBCAM0CNF2, 0x000000F4);
-       io_write_32(DBSC_DBCAM0CNF3, 0x00000000);
-       io_write_32(DBSC_DBSCHCNT0, 0x000F0037);
-       io_write_32(DBSC_DBSCHSZ0, 0x00000001);
-       io_write_32(DBSC_DBSCHRW0, 0x22421111);
+       { DBSC_DBCAM0CNF1, 0x00043218 },
+       { DBSC_DBCAM0CNF2, 0x000000F4 },
+       { DBSC_DBCAM0CNF3, 0x00000000 },
+       { DBSC_DBSCHCNT0, 0x000F0037 },
+       { DBSC_DBSCHSZ0, 0x00000001 },
+       { DBSC_DBSCHRW0, 0x22421111 },
 
        /* DDR3 */
-       io_write_32(DBSC_SCFCTST2, 0x012F1123);
+       { DBSC_SCFCTST2, 0x012F1123 },
 
        /* QoS Settings */
-       io_write_32(DBSC_DBSCHQOS00, 0x00000F00);
-       io_write_32(DBSC_DBSCHQOS01, 0x00000B00);
-       io_write_32(DBSC_DBSCHQOS02, 0x00000000);
-       io_write_32(DBSC_DBSCHQOS03, 0x00000000);
-       io_write_32(DBSC_DBSCHQOS40, 0x00000300);
-       io_write_32(DBSC_DBSCHQOS41, 0x000002F0);
-       io_write_32(DBSC_DBSCHQOS42, 0x00000200);
-       io_write_32(DBSC_DBSCHQOS43, 0x00000100);
-       io_write_32(DBSC_DBSCHQOS90, 0x00000100);
-       io_write_32(DBSC_DBSCHQOS91, 0x000000F0);
-       io_write_32(DBSC_DBSCHQOS92, 0x000000A0);
-       io_write_32(DBSC_DBSCHQOS93, 0x00000040);
-       io_write_32(DBSC_DBSCHQOS120, 0x00000040);
-       io_write_32(DBSC_DBSCHQOS121, 0x00000030);
-       io_write_32(DBSC_DBSCHQOS122, 0x00000020);
-       io_write_32(DBSC_DBSCHQOS123, 0x00000010);
-       io_write_32(DBSC_DBSCHQOS130, 0x00000100);
-       io_write_32(DBSC_DBSCHQOS131, 0x000000F0);
-       io_write_32(DBSC_DBSCHQOS132, 0x000000A0);
-       io_write_32(DBSC_DBSCHQOS133, 0x00000040);
-       io_write_32(DBSC_DBSCHQOS140, 0x000000C0);
-       io_write_32(DBSC_DBSCHQOS141, 0x000000B0);
-       io_write_32(DBSC_DBSCHQOS142, 0x00000080);
-       io_write_32(DBSC_DBSCHQOS143, 0x00000040);
-       io_write_32(DBSC_DBSCHQOS150, 0x00000040);
-       io_write_32(DBSC_DBSCHQOS151, 0x00000030);
-       io_write_32(DBSC_DBSCHQOS152, 0x00000020);
-       io_write_32(DBSC_DBSCHQOS153, 0x00000010);
-}
+       { DBSC_DBSCHQOS00, 0x00000F00 },
+       { DBSC_DBSCHQOS01, 0x00000B00 },
+       { DBSC_DBSCHQOS02, 0x00000000 },
+       { DBSC_DBSCHQOS03, 0x00000000 },
+       { DBSC_DBSCHQOS40, 0x00000300 },
+       { DBSC_DBSCHQOS41, 0x000002F0 },
+       { DBSC_DBSCHQOS42, 0x00000200 },
+       { DBSC_DBSCHQOS43, 0x00000100 },
+       { DBSC_DBSCHQOS90, 0x00000100 },
+       { DBSC_DBSCHQOS91, 0x000000F0 },
+       { DBSC_DBSCHQOS92, 0x000000A0 },
+       { DBSC_DBSCHQOS93, 0x00000040 },
+       { DBSC_DBSCHQOS120, 0x00000040 },
+       { DBSC_DBSCHQOS121, 0x00000030 },
+       { DBSC_DBSCHQOS122, 0x00000020 },
+       { DBSC_DBSCHQOS123, 0x00000010 },
+       { DBSC_DBSCHQOS130, 0x00000100 },
+       { DBSC_DBSCHQOS131, 0x000000F0 },
+       { DBSC_DBSCHQOS132, 0x000000A0 },
+       { DBSC_DBSCHQOS133, 0x00000040 },
+       { DBSC_DBSCHQOS140, 0x000000C0 },
+       { DBSC_DBSCHQOS141, 0x000000B0 },
+       { DBSC_DBSCHQOS142, 0x00000080 },
+       { DBSC_DBSCHQOS143, 0x00000040 },
+       { DBSC_DBSCHQOS150, 0x00000040 },
+       { DBSC_DBSCHQOS151, 0x00000030 },
+       { DBSC_DBSCHQOS152, 0x00000020 },
+       { DBSC_DBSCHQOS153, 0x00000010 },
+};
 
 void qos_init_m3_v11(void)
 {
-       dbsc_setting();
+       rcar_qos_dbsc_setting(m3_v11_qos, ARRAY_SIZE(m3_v11_qos), false);
 
        /* DRAM Split Address mapping */
 #if RCAR_DRAM_SPLIT == RCAR_DRAM_SPLIT_4CH
index 7d70225bfe1341f2370cdcd882c78430d8630474..e300fd54131f30a4570a725db8119b10f6c816d9 100644 (file)
 #endif /* RCAR_REWT_TRAINING != RCAR_REWT_TRAINING_DISABLE */
 #endif
 
-static void dbsc_setting(void)
-{
-       /* Register write enable */
-       io_write_32(DBSC_DBSYSCNT0, 0x00001234U);
-
+struct rcar_gen3_dbsc_qos_settings m3_v30_qos[] = {
        /* BUFCAM settings */
-       io_write_32(DBSC_DBCAM0CNF1, 0x00043218);
-       io_write_32(DBSC_DBCAM0CNF2, 0x000000F4);
-       io_write_32(DBSC_DBCAM0CNF3, 0x00000000);
-       io_write_32(DBSC_DBSCHCNT0,  0x000F0037);
-       io_write_32(DBSC_DBSCHSZ0,   0x00000001);
-       io_write_32(DBSC_DBSCHRW0,   0x22421111);
+       { DBSC_DBCAM0CNF1, 0x00043218 },
+       { DBSC_DBCAM0CNF2, 0x000000F4 },
+       { DBSC_DBCAM0CNF3, 0x00000000 },
+       { DBSC_DBSCHCNT0, 0x000F0037 },
+       { DBSC_DBSCHSZ0, 0x00000001 },
+       { DBSC_DBSCHRW0, 0x22421111 },
 
        /* DDR3 */
-       io_write_32(DBSC_SCFCTST2, 0x012F1123);
+       { DBSC_SCFCTST2, 0x012F1123 },
 
        /* QoS Settings */
-       io_write_32(DBSC_DBSCHQOS00,  0x00000F00);
-       io_write_32(DBSC_DBSCHQOS01,  0x00000B00);
-       io_write_32(DBSC_DBSCHQOS02,  0x00000000);
-       io_write_32(DBSC_DBSCHQOS03,  0x00000000);
-       io_write_32(DBSC_DBSCHQOS40,  0x00000300);
-       io_write_32(DBSC_DBSCHQOS41,  0x000002F0);
-       io_write_32(DBSC_DBSCHQOS42,  0x00000200);
-       io_write_32(DBSC_DBSCHQOS43,  0x00000100);
-       io_write_32(DBSC_DBSCHQOS90,  0x00000100);
-       io_write_32(DBSC_DBSCHQOS91,  0x000000F0);
-       io_write_32(DBSC_DBSCHQOS92,  0x000000A0);
-       io_write_32(DBSC_DBSCHQOS93,  0x00000040);
-       io_write_32(DBSC_DBSCHQOS120, 0x00000040);
-       io_write_32(DBSC_DBSCHQOS121, 0x00000030);
-       io_write_32(DBSC_DBSCHQOS122, 0x00000020);
-       io_write_32(DBSC_DBSCHQOS123, 0x00000010);
-       io_write_32(DBSC_DBSCHQOS130, 0x00000100);
-       io_write_32(DBSC_DBSCHQOS131, 0x000000F0);
-       io_write_32(DBSC_DBSCHQOS132, 0x000000A0);
-       io_write_32(DBSC_DBSCHQOS133, 0x00000040);
-       io_write_32(DBSC_DBSCHQOS140, 0x000000C0);
-       io_write_32(DBSC_DBSCHQOS141, 0x000000B0);
-       io_write_32(DBSC_DBSCHQOS142, 0x00000080);
-       io_write_32(DBSC_DBSCHQOS143, 0x00000040);
-       io_write_32(DBSC_DBSCHQOS150, 0x00000040);
-       io_write_32(DBSC_DBSCHQOS151, 0x00000030);
-       io_write_32(DBSC_DBSCHQOS152, 0x00000020);
-       io_write_32(DBSC_DBSCHQOS153, 0x00000010);
-
-       /* Register write protect */
-       io_write_32(DBSC_DBSYSCNT0, 0x00000000U);
-}
+       { DBSC_DBSCHQOS00, 0x00000F00 },
+       { DBSC_DBSCHQOS01, 0x00000B00 },
+       { DBSC_DBSCHQOS02, 0x00000000 },
+       { DBSC_DBSCHQOS03, 0x00000000 },
+       { DBSC_DBSCHQOS40, 0x00000300 },
+       { DBSC_DBSCHQOS41, 0x000002F0 },
+       { DBSC_DBSCHQOS42, 0x00000200 },
+       { DBSC_DBSCHQOS43, 0x00000100 },
+       { DBSC_DBSCHQOS90, 0x00000100 },
+       { DBSC_DBSCHQOS91, 0x000000F0 },
+       { DBSC_DBSCHQOS92, 0x000000A0 },
+       { DBSC_DBSCHQOS93, 0x00000040 },
+       { DBSC_DBSCHQOS120, 0x00000040 },
+       { DBSC_DBSCHQOS121, 0x00000030 },
+       { DBSC_DBSCHQOS122, 0x00000020 },
+       { DBSC_DBSCHQOS123, 0x00000010 },
+       { DBSC_DBSCHQOS130, 0x00000100 },
+       { DBSC_DBSCHQOS131, 0x000000F0 },
+       { DBSC_DBSCHQOS132, 0x000000A0 },
+       { DBSC_DBSCHQOS133, 0x00000040 },
+       { DBSC_DBSCHQOS140, 0x000000C0 },
+       { DBSC_DBSCHQOS141, 0x000000B0 },
+       { DBSC_DBSCHQOS142, 0x00000080 },
+       { DBSC_DBSCHQOS143, 0x00000040 },
+       { DBSC_DBSCHQOS150, 0x00000040 },
+       { DBSC_DBSCHQOS151, 0x00000030 },
+       { DBSC_DBSCHQOS152, 0x00000020 },
+       { DBSC_DBSCHQOS153, 0x00000010 },
+};
 
 void qos_init_m3_v30(void)
 {
-       dbsc_setting();
+       rcar_qos_dbsc_setting(m3_v30_qos, ARRAY_SIZE(m3_v30_qos), true);
 
        /* DRAM Split Address mapping */
 #if RCAR_DRAM_SPLIT == RCAR_DRAM_SPLIT_4CH